home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PsL Monthly 1993 December
/
PSL Monthly Shareware CD-ROM (December 1993).iso
/
prgmming
/
dos
/
pascal
/
prg_bar.exe
/
CALC.CPP
< prev
next >
Wrap
C/C++ Source or Header
|
1992-08-30
|
5KB
|
221 lines
// This is an example of a progress bar.
//
// Modified THERMO.ZIP in the C++ lib to work with TURBO VISION
// and fixed a small bug.
//
// Author: Jay Perez.
#define Uses_TBackground
#define Uses_TListBox
#define Uses_TMenu
#define Uses_TMenuBar
#define Uses_TMenuItem
#define Uses_TScrollBar
#define Uses_TStaticText
#define Uses_TStatusDef
#define Uses_TStatusItem
#define Uses_TStatusLine
#define Uses_TStringCollection
#define Uses_MsgBox
#define Uses_TEventQueue
#define Uses_TApplication
#define Uses_TRect
#define Uses_TDeskTop
#define Uses_TView
#define Uses_TWindow
#define Uses_TDialog
#define Uses_TButton
#define Uses_StaticText
#define Uses_TSItem
#define Uses_TLabel
#define Uses_TInputLine
#define Uses_TEvent
#define Uses_TKeys
#define Uses_TDrawBuffer
#define Uses_TStreamableClass
#define Uses_TStreamable
#include <tv.h>
__link( RView )
__link( RDialog )
__link( RButton )
#include <mem.h> // memset
#include <dos.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <strstrea.h>
#include <iomanip.h>
#include <conio.h>
#include "tprogbar.h"
const int sampleIterations = 21 ;
const cmAboutCmd = 100; // User selected menu item 'About'
const cmStatusCmd = 101; // User selected menu item 'Progress Bar'
//========================================================================
class myProgress : public TProgressBar
{
public :
myProgress(TRect& r, unsigned long iters ) :
TProgressBar( r , iters ){};
virtual void mainProcess( void );
};
myProgress *bar ;
//========================================================================
class TMyApplication : public TApplication
{
public:
TMyApplication();
static TMenuBar *initMenuBar(TRect);
void handleEvent(TEvent &);
private:
void aboutDlg();
void statusDlg();
};
//========================================================================
TMyApplication::TMyApplication() :
TProgInit(&TApplication::initStatusLine,&TMyApplication::initMenuBar,
&TApplication::initDeskTop)
{
}
//========================================================================
TMenuBar *TMyApplication::initMenuBar(TRect bounds)
{
bounds.b.y = bounds.a.y + 1;
return(new TMenuBar(bounds,
new TMenu(
*new TMenuItem("~A~bout",cmAboutCmd,kbAltA,hcNoContext,0,
new TMenuItem("~P~rogress Bar",cmStatusCmd,kbAltL,hcNoContext,0)))));
}
//========================================================================
void TMyApplication::handleEvent(TEvent &event)
{
TApplication::handleEvent(event);
if (event.what == evCommand)
{
switch (event.message.command)
{
case cmAboutCmd:
{
aboutDlg();
clearEvent(event);
break;
}
case cmStatusCmd:
{
statusDlg();
clearEvent(event);
break;
}
}
}
}
//========================================================================
void TMyApplication::aboutDlg()
{
TDialog *pd = new TDialog(TRect(0,0,35,12),"About");
if (pd)
{
pd->options |= ofCentered;
pd->insert(new TStaticText(TRect(1,2,34,7),
"\003Turbo Vision Example\n\003\n"
"\003Creating a Progress Bar\n\003\n"));
pd->insert(new TButton(TRect(3,9,32,11),"~O~k",cmOK,bfDefault));
if (validView(pd) != 0)
{
deskTop->execView(pd);
destroy(pd);
}
}
}
//========================================================================
void TMyApplication::statusDlg()
{
TView *tv;
TDialog *pd = new TDialog( TRect( 10, 3, 69, 11 ), "Please Wait" ) ;
if (pd) {
pd->options |= ofFirstClick;
pd->options |= ofCentered;
TRect r = TRect(4,4,25,6) ;
tv = new TButton(r, "~S~tart", cmOK, bfNormal | bfBroadcast ) ;
tv->options &= ~ofSelectable;
pd->insert( tv );
r = TRect(34,4,55,6) ;
tv = new TButton( r, "~C~ancel", cmCancel, bfNormal);
pd->insert( tv );
bar = new myProgress( TRect( 4, 2, 55, 3 ), 0 ) ;
pd->insert( ( TView * ) bar ) ;
if( TProgram::application->validView( pd ) != 0 ) { // If it's valid...
TProgram::deskTop->execView( pd ) ;
TObject::destroy( pd ) ;
}
}
return ;
}
//========================================================================
int main(void)
{
TMyApplication myApplication;
myApplication.run();
return 0;
}
//========================================================================
void myProgress::mainProcess( void )
{
// Place your processing logic here...
unsigned long cnt = 0 ;
setMaxIter( sampleIterations ) ; // set maximum number of iterations...
// do it here or on the constructor ...
// or both.
for( int x = 0; x < sampleIterations; x++ )
{
setCurIter( ++cnt ); // set the current iteration count & update
delay(500);
}
delay(500);
message(owner,evCommand,cmOK,this);// close dialog box
}
//========================================================================